namespace NAsserter
{
    public delegate void Action<T1, T2>(T1 arg1, T2 arg2);

    /// <summary>
    /// Provides a delegate for a callback of an Action with a return.
    /// </summary>
    /// <typeparam name="TResult">The type of object that will be returned by the callback function</typeparam>
    /// <returns>An object as a result of the action</returns>
    public delegate TResult Func<TResult>();

    /// <summary>
    /// Encapsulates a method that has one parameter and returns a value of the type specified by the TResult parameter.
    /// </summary>
    public delegate TResult Func<T, TResult>(T arg);
}